package com.bookcloud.java21.chapter6.抽象类接口区别69;

public class AbstractVsInterface {
  public static void main(String[] args) {
    // 调用具体的类的实例
    ConcreteClass concreteClass = new ConcreteClass(10);
    concreteClass.abstractMethod();
    concreteClass.defaultMethod();

    // 调用静态方法
    InterfaceExample.staticMethod();
    // 调用常量
    System.out.println(InterfaceExample.CONSTANT);
    // 多态的效果
    InterfaceExample interfaceExample = new ConcreteClass(10);
    interfaceExample.abstractMethod();
    interfaceExample.defaultMethod();
    ConcreteClass obj = new ConcreteClass(10);
    // 多态引用
    AbstractClassExample absRef = obj;
    InterfaceExample intfRef = obj;

    absRef.abstractMethod();
    intfRef.abstractMethod();
    intfRef.defaultMethod();
  }
}
